package com.example.myapplication.slice;

import com.example.myapplication.ResourceTable;
import com.example.myapplication.beans.Product;
import com.example.myapplication.beans.ProductImg;
import com.example.myapplication.beans.ProductSku;
import com.example.myapplication.beans.ResultVO;
import com.example.myapplication.provider.ProductImagePageSliderProvider;
import com.example.myapplication.utils.ApiUtil;
import com.example.myapplication.utils.DataBaseUtil;
import com.example.myapplication.utils.HttpRequestUtil;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import ohos.aafwk.ability.AbilitySlice;
import ohos.aafwk.content.Intent;
import ohos.agp.components.*;
import ohos.agp.components.element.Element;
import ohos.agp.components.element.ElementScatter;
import ohos.agp.utils.Color;
import ohos.agp.window.dialog.ToastDialog;
import ohos.app.dispatcher.task.TaskPriority;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class DetailAbilitySlice extends AbilitySlice {

    //和下边连接服务器同步注释或打开
//    private Gson gson = new Gson();
//    //添加购物车传递的数据
//    String selectSkuId = "";//用来记录用户选择的套餐的ID
//    double selectSkuPrice = 0.0;//用来记录选择的套餐的价格

    @Override
    protected void onStart(Intent intent) {
        super.onStart(intent);
        setUIContent(ResourceTable.Layout_ability_detail);

        //获取商品ID（静态）
//        String productId = (String) intent.getParams().getParam("productId");
//        Text text = findComponentById(ResourceTable.Id_product_detail_text);
//        text.setText(productId);


//        //服务器数据（动态）
//        String productId = (String) intent.getParams().getParam("productId");
//
//
//        //根据商品ID查询商品详细信息（线程中）
//        getGlobalTaskDispatcher(TaskPriority.DEFAULT).asyncDispatch(() -> {
//            //(自己更改）
//            String s = HttpRequestUtil.sendGetRequest(this, ApiUtil.BASE_PATH + "product/..." + productId);
//            ResultVO resultVO = gson.fromJson(s,ResultVO.class);
//            if (resultVO.getCode() == 200){
//                Object data1 = resultVO.getData();
//                //根据返回的数据格式，转换
//                Map data = (Map) data1;
//
//                //商品基本信息
//                String product1 = gson.toJson(data.get("product"));
//                Product product = gson.fromJson(product1,Product.class);
//
//                //商品图片
//                String jsonStr1 = gson.toJson(data.get("productImgs"));
//                List<ProductImg> imgList = gson.fromJson(jsonStr1,new TypeToken<List<ProductImg>>(){}.getType());
//
//                //商品套餐
//                String jsonStr2 = gson.toJson(data.get("productSkus"));
//                //封装实体类productSku
//                List<ProductSku> skuList = gson.fromJson(jsonStr2,new TypeToken<List<ProductSku>>(){}.getType());
//
////                System.out.println(product);
////                System.out.println(imgList);
////                System.out.println(skuList);
//
//                //渲染（放在线程中）
//                getUITaskDispatcher().asyncDispatch(() -> {
//                    //显示商品基本信息(渲染图片信息)
//                    //显示商品图片信息：轮播图
//                    PageSlider pageSlider = findComponentById(ResourceTable.Id_product_detail_image_pageSlider);
//                    //封装适配器ProductImagePageSliderProvider
//                     ProductImagePageSliderProvider provider = new ProductImagePageSliderProvider(imgList,this);
//                     pageSlider.setProvider(provider);
//
//                     //渲染套餐
//                    TableLayout tableLayout = findComponentById(ResourceTable.Id_product_skus_table);
//                    //当进入下一个商品页面时先清除上个页面保存的内容
//                    tableLayout.removeAllComponents();
//
//                    //找到文本组件
//                    Text text1 = findComponentById(ResourceTable.Id_product_detail_price_text);
//                    Text text2 = findComponentById(ResourceTable.Id_product_detail_sku_text);
//                    Text text3 = findComponentById(ResourceTable.Id_product_detail_desc_text);
//                    //找到样式元素
//                    //未选中
//                    Element e1 = ElementScatter.getInstance(this).parse(ResourceTable.Graphic_background_sku_unchecked);
//                    //选中
//                    Element e2 = ElementScatter.getInstance(this).parse(ResourceTable.Graphic_background_sku_checked);
//
//                    //定义一个数组，存放套餐text，以便和商品价格等信息进行联动
//                    Text[] texts = new Text[skuList.size()];
//
//                    //将信息显示出来
//                    for (int i=0;i < skuList.size();i++){
//                        ProductSku sku = skuList.get(i);
//
//                        Component skuTemplate = LayoutScatter.getInstance(this).parse(ResourceTable.Layout_sku_list_item_template, null, false);
//                        Text text = skuTemplate.findComponentById(ResourceTable.Id_sku_name_text);
//                        text.setText(sku.getSkuName());
//                        //未选中
//                        text.setBackground(e1);
//                        tableLayout.addComponent(skuTemplate);
//                        //将当前文本给对应数组，以便联动
//                        texts[i] = text;
//
//                        //默认将第一个套餐的信息显示出来
//                        if (i == 0){
//                            //选中
//                            text.setBackground(e2);
//                            text.setTextColor(Color.WHITE);
//                            text1.setText("￥" + sku.getSellPrice());
//                            text2.setText(sku.getSkuName());
//                            text3.setText(sku.getUntitled());
//
//                            //为添加购物车做准备
//                            selectSkuId = sku.getSkuId();
//                            selectSkuPrice = sku.getSellPrice();
//                        }
//
//                    }
//                    //信息联动
//                    for (int j = 0;j < texts.length;j++){
//                        Text text = texts[j];
//                        //j表示点击的当前套餐索引，表示获取当前套餐对象
//                        ProductSku sku = skuList.get(j);
//
//                        //对套餐列表中的套餐信息进行监听
//                        //当点击某一个套餐时，将所有的套餐先变黑，再将点击的自身变红
//                        text.setClickedListener(component -> {
//
//                            for (int k = 0;k < texts.length;k++){
//                                //设置未选中的背景样式
//                                texts[k].setBackground(e1);
//                                texts[k].setTextColor(Color.BLACK);
//                            }
//                            //表示点击的套餐
//                            Text t = (Text) component;
//                            //设置选中背景样式
//                            t.setBackground(e2);
//                            t.setTextColor(Color.WHITE);
//                            //套餐和商品信息联动
//                            text1.setText("￥" + sku.getSellPrice());
//                            text2.setText(sku.getSkuName());
//                            text3.setText(sku.getUntitled());
//
//                            //为添加购物车做准备
//                            selectSkuId = sku.getSkuId();
//                            selectSkuPrice = sku.getSellPrice();
//                        });
//                    }
//
//
//                });
//
//
//            }
//
//
//
//        });
//
//
//        //监听数量按钮事件
//        Button btn1 = findComponentById(ResourceTable.Id_change_num_btn1);
//        Button btn2 = findComponentById(ResourceTable.Id_change_num_btn2);
//        Text numText = findComponentById(ResourceTable.Id_num_text);
//        //设置监听器对象，以便两个按钮同时使用
//        Component.ClickedListener listener = new Component.ClickedListener(){
//            @Override
//            public void onClick(Component component) {
//                int num = Integer.parseInt(numText.getText());
//                if (component == btn1){//点击减号
//                    num = num>1?num-1:num;
//                }else if (component == btn2){//点击加号
//                    num = num+1;
//                }
//                numText.setText(num+"");
//            }
//        };
//        btn1.setClickedListener(listener);
//        btn2.setClickedListener(listener);
//
//        //添加购物车
//        Button addBtn = findComponentById(ResourceTable.Id_shopcart_add_button);
//        addBtn.setClickedListener(component -> {
//            //请求网络接口要放在线程中
//            getGlobalTaskDispatcher(TaskPriority.DEFAULT).asyncDispatch(() -> {
//                //收集数据
//                String token = DataBaseUtil.getValue("token",this);
//                String userId = DataBaseUtil.getValue("userId",this);
//                String num = numText.getText();
//
//                //请求参数（自己更改）
//                Map<String,Object> params = new HashMap<>();
//                params.put("cartId",0);
//                params.put("cartNum",num);
//                params.put("productId",productId);
//                params.put("productPrice",selectSkuPrice);
//                params.put("skuId",selectSkuId);
//                params.put("skuProps","");
//                params.put("userId",userId);
//                //将数据转换成json格式
//                String paramStr = gson.toJson(params);
//
//                //向服务器提交数据
//                String urlString = ApiUtil.BASE_PATH + "shopcart/...";//接口地址（自己更改）
//                String s = HttpRequestUtil.sendPostRequestWithTakenWithData(this, urlString, token, paramStr);
//                ResultVO resultVO = gson.fromJson(s,ResultVO.class);
//                if (resultVO.getCode() == 200){
//                    //在此线程中不能使用吐司弹窗
//                    //new ToastDialog(this).setText("添加购物车成功！").show();
//                    System.out.println("------添加购物车成功");
//
//                }
//            });
//
//        });

    }
}
